This invention relates to distributed groupware applications and more specifically to a system and method for providing, within an object-oriented programming environment, applications which can collaborate and synchronize data with other remote applications, and dynamically add, delete and track collaborations with remote applications.
Synchronous distributed groupware applications have proliferated in the technology, particularly with the increased popularity of the World Wide Web. Loosely integrated groupware applications, such as chat boards, allow effectively simultaneous access at a single group xe2x80x9clocation,xe2x80x9d via browsers, to a host of remotely-located users. And with the addition of user programmability at the remote locations, the groupware applications can be extended to allow collaborative efforts which can range from collaborative input to a single version of a form to group navigation tools.
From the end user""s perspective, the collaborative applications must be highly responsive, providing graphical user interface (GUI) responses at the initiating site as if only a single user were operating with the application, and providing updates at the remote sites with minimal response latency. In addition, the collaborative applications must provide awareness of ongoing collaborations and operations within the applications to all users.
Due to the wide variety of applications to be supported, it is desirable to provide a general application development framework. From the programming perspective, the development framework must be independent of the application and high level, capable of expressing a wide variety of collaborative applications. In addition, it is preferable that the developer not be required to be aware of distributed communication protocols, thread synchronization, contention, and other details of concurrent distributed programming.
Currently available object-based, GUI-oriented systems make use of the so-called Model View Controller (MVC) development scheme. Using MVC, applications can attach views to model objects, with controllers being used to update the state of the model objects. Typically, controllers receive input from GUI components and, in response, invoke operations to read or write the state of the model objects. The views are automatically notified when model objects are updated.
It is desirable to extend the MVC development scheme to development of collaborative applications having standard, generic model objects, with provision to the user of a responsive model object-based system capable of guaranteed atomicity on updates to model objects replicated at remote locations, and featuring dynamic establishment of collaborations between local model objects and those at remote applications.
The foregoing and other objectives are realized by the present invention which provides a system and method featuring a collection of model objects which hold data to be shared, and supporting interfaces to read and write the data, to create and destroy collaboration relationships between model objects and to attach xe2x80x9cview objectsxe2x80x9d containing application code which will be automatically notified of value changes. Each user environment is provided with a model object control entity, referred to herein as a Collaboration Manager, which creates model objects, executes transactions, and creates association objects monitoring the state of the collaboration relationships. A concurrency control mechanism records the reads and updates of the data and of collaboration relationships within a single transaction site and guarantees that they are applied atomically and consistently to both the local and remote replica objects of the collaboration.